<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // for(var i=1;i<=5;i++){
        //     (function(i){
        //         setTimeout(function timer(){
        //             console.log(i)
        //         },i*1000)
        //     })(i)
        // }
        // console.log(i)
        //输出结果  612345
        // for循环外面的是同步任务，所以先输出一个6，
        //setTimeout是异步任务所以后执行它，setTimeout是定时器每隔i秒调用一次，所以会输出12345
      
        // var obj1={a:1,b:2,c:3,d:{e:4}}
        // var obj2={...obj1};
        // obj1.a=2
        // obj1.d.e=5;
        // console.log(obj2)
          //输出结果  {a: 1, b: 2, c: 3, d: {e: 5}}
         //var obj2={...obj1}属于浅拷贝不是深拷贝，a是基本数据类型，浅拷贝又只拷贝一层
      
         setTimeout(function(){
             console.log(1)
         },0)
         new Promise(function(resolve){
            console.log(2)
            resolve();
            console.log(3)
         }).then(function(){
            console.log(4)
         })
             //输出结果2341
             //setTimeout属于宏任务，promise是微任务先执行，输出2,3
             //执行完promise紧跟着执行then 输出4
             //最后执行setTimeout 输出1
    </script>
</body>
</html>